/// 迭代器遍历Vec
pub fn test() {
    let mut v = vec![1, 2, 3, 4, 5];

    for i in &v { // 基本上来讲，Vec属于分配在堆Heap上面的复杂数据类型，因此它肯定不会自动复制一份。这样再访问的时候就需要获取引用&Vec，否则就会获取所有权
        println!("A reference to {}", i);
    }

    for i in &mut v {
        println!("A mutable reference to {}", i);
    }

    for i in v { // 此处就会获取Vec的所有权
        println!("Take ownership of the vector and its elemtn {}", i);
    }
    // 下面这句就是不可执行的，因为已经获取了Vec的所有权并传入了println!
    // 考虑实际场景，如果println!会把v置为空指针，那么下面这一句就是空指针
    // println!("{:?}", v);
}
